Colin Walters [Wed, 15 May 2013 12:18:53 +0000 (08:18 -0400)]
upgrade: Don't require specification of osname
Since this is a highly visible command, let's have a sane default and
upgrade the currently running OS.
Colin Walters [Wed, 1 May 2013 23:15:06 +0000 (19:15 -0400)]
Add a --version argument that also outputs features
And use it in the tests to skip libarchive tests when the build
doesn't support it.
Colin Walters [Wed, 1 May 2013 22:43:01 +0000 (18:43 -0400)]
archive-test: Handle umask of 022 or 002
Red Hat appears to default to 002, whereas Debian systems default
to 022. Fun.
Colin Walters [Wed, 1 May 2013 19:26:21 +0000 (15:26 -0400)]
Install tests
Matching https://live.gnome.org/GnomeGoals/InstalledTests
Colin Walters [Wed, 1 May 2013 16:15:02 +0000 (12:15 -0400)]
checkout: Add --allow-noent option
This is useful for the gnome-ostree build system where each build is
one commit, but it's split up into /runtime /devel /debug etc. trees.
Ideally we wouldn't have a /debug subdirectory for "noarch"
components for example.
So add an option to not error out if the given path doesn't exist in
the commit.
Colin Walters [Tue, 30 Apr 2013 23:34:20 +0000 (19:34 -0400)]
repo: Fix race condition in async checkout
When multiple threads need to uncompress an object, there was
a race condition where thread A could get EEXIST, unlink,
then thread B calls linkat(), then thread A tries to link() but
fails.
We can just loop in this case.
Colin Walters [Tue, 30 Apr 2013 02:08:56 +0000 (22:08 -0400)]
libotutil: Drop is-hidden from fast queryinfo
Since now we look at .hidden files and bang on the mainloop for every
file lookup if that's specified =(
Colin Walters [Mon, 29 Apr 2013 18:04:48 +0000 (14:04 -0400)]
libgsystem: Update to latest
Colin Walters [Fri, 26 Apr 2013 22:15:51 +0000 (18:15 -0400)]
deploy: Swap current symlink only after updating the kernel
While this still isn't fully atomic (that depends on the bootloader),
this better ensures that the deployed kernel is booted with the
intended tree. For example, if we get ENOSPC when writing out the
kernel, we won't have swapped the symlink.
Colin Walters [Mon, 22 Apr 2013 16:27:47 +0000 (12:27 -0400)]
libgsystem: Update
Colin Walters [Sun, 21 Apr 2013 14:39:27 +0000 (10:39 -0400)]
pull-deploy: Tweak documentation to show using it for switching trees
Colin Walters [Mon, 15 Apr 2013 16:50:58 +0000 (12:50 -0400)]
admin: Use linkcopy_sync_data() for initramfs instead of rename()
It's possible (likely even) that /tmp is on a separate filesystem; in
that case, a raw rename() is going to fail.
Saw this on the ostree.gnome.org builder.
Colin Walters [Mon, 8 Apr 2013 20:55:35 +0000 (16:55 -0400)]
prune: Use g_format_size() so we get a human-readable number
We don't really care about the precise bytes.
Colin Walters [Wed, 3 Apr 2013 04:50:16 +0000 (00:50 -0400)]
waitablequeue: Only use API from GLib 2.34
As intended.
Colin Walters [Tue, 2 Apr 2013 02:23:46 +0000 (22:23 -0400)]
Release 2013.2
Colin Walters [Tue, 2 Apr 2013 02:18:56 +0000 (22:18 -0400)]
build: Add scripts to EXTRA_DIST
...because Automake apparently doesn't.
Colin Walters [Tue, 2 Apr 2013 01:52:24 +0000 (21:52 -0400)]
switchroot: Suppress compiler warning for asprintf
We're not going to run OOM here, if we do, we're totally screwed
anyways.
Colin Walters [Tue, 2 Apr 2013 01:36:40 +0000 (21:36 -0400)]
Release 2013.1
Colin Walters [Fri, 29 Mar 2013 21:16:03 +0000 (17:16 -0400)]
pull: Rework threading communication model
Previously, I've observed bugs where we either:
1) Exit too early, leaving undownloaded objects
2) Hang while downloading
This rewrite hopefully fixes both.
Colin Walters [Mon, 1 Apr 2013 22:53:12 +0000 (18:53 -0400)]
run-apache: Use -DFOREGROUND, not -X
-X implies debug mode which limits the workers to 1, which totally
kills parallelism.
Colin Walters [Mon, 1 Apr 2013 15:43:03 +0000 (11:43 -0400)]
core: Fix object enumeration for archive-z2 repositories
This makes fsck work again, among other things.
Colin Walters [Fri, 29 Mar 2013 21:22:56 +0000 (17:22 -0400)]
pull: Drop support for original archive repositories
For future refactoring here, it's just too complex to maintain support
for both of them, and the advantages of archive-z2 outweigh archive
too much.
Colin Walters [Tue, 26 Mar 2013 12:29:30 +0000 (08:29 -0400)]
tests: Update expected diff output
For previous diff commit.
Colin Walters [Mon, 18 Mar 2013 22:11:00 +0000 (18:11 -0400)]
admin: Assume we're using /ostree if there's a toplevel /usr
Mainly so admin install works without an existing /ostree again.
Colin Walters [Sat, 16 Mar 2013 21:45:15 +0000 (17:45 -0400)]
admin: Support installing pregenerated initramfs images from tree
Us running dracut is a hack, basically. We should default to
generating this on the server.
Colin Walters [Tue, 12 Mar 2013 22:45:27 +0000 (18:45 -0400)]
build: Bump GLib dependency to 2.34.0
Just cleaner than an unstable version.
Colin Walters [Tue, 12 Mar 2013 12:47:11 +0000 (08:47 -0400)]
config-diff: Properly print files relative to root
Just less ugly.
Colin Walters [Thu, 7 Mar 2013 21:46:41 +0000 (16:46 -0500)]
admin: Fix lookup of active root
This should hopefully *really* fix deleting running deployments
https://bugzilla.gnome.org/show_bug.cgi?id=694762
Colin Walters [Mon, 4 Mar 2013 23:00:23 +0000 (18:00 -0500)]
admin: Don't delete the running deployment
https://bugzilla.gnome.org/show_bug.cgi?id=694762
Colin Walters [Mon, 4 Mar 2013 16:52:43 +0000 (11:52 -0500)]
deploy: Don't run triggers if /usr/share/ostree/triggers-run exists
This is preparatory work for a future gnome-ostree commit where we'll
default to running triggers on the build server side.
Colin Walters [Tue, 26 Feb 2013 17:19:05 +0000 (12:19 -0500)]
Update libgsystem
Colin Walters [Sun, 24 Feb 2013 15:00:23 +0000 (10:00 -0500)]
core: Use default /sysroot/ostree/repo or just /ostree/repo as appropriate
The old logic was just weird, special casing root, and we can easily
autodetect the case where we need /ostree/repo.
Colin Walters [Sun, 24 Feb 2013 11:35:23 +0000 (06:35 -0500)]
build: Use AC_SYS_LARGEFILE
So we do the right thing on 32 bit.
Colin Walters [Sat, 23 Feb 2013 16:15:19 +0000 (11:15 -0500)]
pull-local: Don't call g_hash_table_init() on a NULL hash
Not sure why this wasn't crashing before.
Colin Walters [Sat, 23 Feb 2013 16:02:56 +0000 (11:02 -0500)]
core: Add API to convert csum -> checksum without malloc()
Just doing some profiling, this was in the top malloc() callers.
Colin Walters [Thu, 21 Feb 2013 18:05:14 +0000 (13:05 -0500)]
pull-local: Fix uninitialized variable ref
Colin Walters [Thu, 21 Feb 2013 16:18:29 +0000 (11:18 -0500)]
TODO: A few updates
Colin Walters [Thu, 21 Feb 2013 13:54:13 +0000 (08:54 -0500)]
pull-local: Output status even in non-tty case
This way I can see progress when running builddisks.
Colin Walters [Tue, 19 Feb 2013 16:02:33 +0000 (11:02 -0500)]
admin: Use /sysroot/ostree automatically
When booted inside an ostree system, we want /sysroot/ostree, not
just /ostree by default.
Colin Walters [Tue, 12 Feb 2013 01:46:53 +0000 (20:46 -0500)]
switchroot: Use MS_MOVE to / rather than chroot
This fixes a number of bugs; the two biggest are:
1) On shutdown systemd can correctly umount /
2) We can use linux-user-chroot inside the system, as is
necessary to do upgrades
See http://lists.freedesktop.org/archives/systemd-devel/2012-September/006703.html
Colin Walters [Fri, 1 Feb 2013 15:56:06 +0000 (10:56 -0500)]
pull-deploy: Allow switching trees too
$ ostree admin pull-deploy gnome-ostree trees/gnomeos-3.8-x86_64-devel
Now works to switch your current tree to -devel from the current
runtime.
Colin Walters [Mon, 28 Jan 2013 20:44:13 +0000 (15:44 -0500)]
pull-local: Fix crasher in previous commit when not connected to tty
Colin Walters [Mon, 28 Jan 2013 20:35:47 +0000 (15:35 -0500)]
pull-local: Port to GSConsole
Colin Walters [Mon, 28 Jan 2013 20:32:06 +0000 (15:32 -0500)]
pull-local: Support pulling checksums too
This matches what pull allows.
Colin Walters [Fri, 25 Jan 2013 20:19:34 +0000 (15:19 -0500)]
libgsystem: Update to the latest
Colin Walters [Thu, 24 Jan 2013 22:32:59 +0000 (17:32 -0500)]
admin: Don't overwrite previous ref unless it's different
We shouldn't overwrite deploy/<osname>/previous unless we actually
have something new.
This fixes the bug where two consecutive:
$ ostree admin upgrade foo
$ ostree admin upgrade foo
would end up pruning the data for foo/previous from the repo.
Colin Walters [Thu, 24 Jan 2013 20:38:06 +0000 (15:38 -0500)]
pull: Drop dead code to pad output strings too
This is in GSConsole now.
Colin Walters [Thu, 24 Jan 2013 20:22:16 +0000 (15:22 -0500)]
Port ostree-pull to GSConsole
As part of this, we need to ensure our streams are inherited across
the chain of child processes.
Colin Walters [Wed, 23 Jan 2013 20:20:19 +0000 (15:20 -0500)]
Update to the latest libgsystem
Colin Walters [Fri, 18 Jan 2013 13:38:09 +0000 (08:38 -0500)]
admin install: Ensure /ostree is initialized first
https://bugzilla.gnome.org/show_bug.cgi?id=692008
Colin Walters [Fri, 18 Jan 2013 03:08:21 +0000 (22:08 -0500)]
admin: Ensure /var/log/journal exists
This is admittedly a hack, since the story is that services should be
handling /var on their own. But on the other hand the current systemd
story is that admins should create it to enable it. Possibly a better
fix is --enable-journal-always or something for systemd.
Colin Walters [Wed, 9 Jan 2013 09:32:51 +0000 (04:32 -0500)]
update-kernel: Change dracut to use tmpdir on host, fix deploy path lookup
We had a bit of legacy code that looked for "current" if the deploy
path was unspecified; this needs to be deploy/OSNAME/current.
Secondly, we need to point dracut at a tmpdir outside of the root when
doing FUSE, because directories with mode 0700 and owned by root:root
aren't writable.
Also update libgsystem to the latest.
Colin Walters [Tue, 8 Jan 2013 18:57:24 +0000 (13:57 -0500)]
admin: Add --no-bootloader option to update-kernel
Will be used by the QA scripts, since we need to inspect the kernel
configuration and generate a correct grub conf from that, rather than
trying to have update-bootloader reuse an existing config, since there
won't be one initially.
Colin Walters [Tue, 8 Jan 2013 12:04:29 +0000 (07:04 -0500)]
Update to the latest libgsystem
Colin Walters [Sun, 6 Jan 2013 16:47:40 +0000 (11:47 -0500)]
admin update-kernel: Drop support for booting from host kernel
Now that gnome-ostree has a kernel, this functionality is no longer
necessary. It was always a hack.
Colin Walters [Sun, 6 Jan 2013 11:43:49 +0000 (06:43 -0500)]
admin update-kernel: Ensure initramfs has correct owner/mode
It was 0600, and owned by the creating process (in the fuse case,
non-root!). We want it 0644/root/root.
Colin Walters [Sun, 6 Jan 2013 11:12:42 +0000 (06:12 -0500)]
admin: Propagate --boot-dir to subcommands
Really, I should be using internal functions here...
Colin Walters [Sat, 5 Jan 2013 00:47:56 +0000 (19:47 -0500)]
core: Drop dead prototypes from header
Followup to previous commit.
Colin Walters [Sat, 5 Jan 2013 00:46:02 +0000 (19:46 -0500)]
core: Reuse more libgsystem API in utils
More code drain to libgsystem.
Colin Walters [Sat, 5 Jan 2013 00:32:26 +0000 (19:32 -0500)]
core: Ensure kernel and initramfs are put into place with fdatasync()
Via a new libgsystem API.
Colin Walters [Fri, 4 Jan 2013 22:25:32 +0000 (17:25 -0500)]
core: Drain fdatasync() API into libgsystem
Just code cleanup.
Colin Walters [Thu, 3 Jan 2013 03:44:06 +0000 (22:44 -0500)]
admin: Allow specifying --boot-dir
This is intended for use by QA tools that want to manipulate a
loopback-mounted disk image or the like.
Giovanni Campagna [Fri, 21 Dec 2012 23:21:28 +0000 (00:21 +0100)]
admin: restore current-etc symlink
It is useful now like it was before, and it is used by the grub
update script.
https://bugzilla.gnome.org/show_bug.cgi?id=690743
Colin Walters [Sun, 23 Dec 2012 22:36:42 +0000 (17:36 -0500)]
Release 2012.13
Colin Walters [Sun, 23 Dec 2012 22:18:08 +0000 (17:18 -0500)]
pull: Fix a race condition causing an early exit
This is a little less magical than what we had before.
Colin Walters [Sun, 23 Dec 2012 19:29:15 +0000 (14:29 -0500)]
pull: Use a basic exponential moving average for bytes/sec
Still should look what other downloading programs do, but this
is better then what we had before.
Colin Walters [Sat, 22 Dec 2012 18:43:44 +0000 (13:43 -0500)]
admin: Add new run-triggers command
In some cases we want the ability to run triggers independently of
checking out a tree. For example, due to kernel limitations which
impact the gnome-ostree build system, we may need to run triggers on
first boot via systemd.
Secondarily, if the user installs a system extension which adds a new
shared library to /usr/lib for example, the system will need to run
the triggers again.
Also, I think I want to take triggers out of the core and put them in
ostree admin anyways.
Colin Walters [Wed, 19 Dec 2012 22:52:46 +0000 (17:52 -0500)]
admin: Rework /ostree/deploy to support multiple independent operating systems
The real vision of OSTree is to "multiple versions of multiple
operating systems". Up until now, it's worked to install gnome-ostree
inside a host distribution, but several things don't work quite right
if you try to do completely different systems.
In the new model, there's the concept of an "osname" which encompasses
a few properties:
1) Its own /var
2) A set of trees deployed in /ostree/deploy/OSNAME/
3) Its own "current" and "previous" links.
Now it no longer really makes sense to boot with "ostree=current".
Instead, you specify e.g. "ostree=gnome/current".
This is an incompatible change to the deployment code - you will need
to run init-os gnome and redeploy.
All "ostree admin" subcommands now take an OSNAME argument.
Colin Walters [Tue, 4 Dec 2012 00:18:37 +0000 (19:18 -0500)]
admin: Support installing a kernel from the tree, default to it
The "protocol" here is rather lame; we just look for
/boot/vmlinuz-RELEASE and /lib/modules/RELEASE. But good enough for
now.
Colin Walters [Fri, 21 Dec 2012 16:52:28 +0000 (11:52 -0500)]
core: Use new libgsystem GSSubprocess API
It's less screwing around with GPtrArray in most cases.
Colin Walters [Fri, 21 Dec 2012 16:33:05 +0000 (11:33 -0500)]
build: Set libsoup min/max defines
So we don't get warnings about soup_requester being deprecated.
Colin Walters [Fri, 21 Dec 2012 16:07:50 +0000 (11:07 -0500)]
core: Pick better names for tmpfiles if no prefix given
Just makes it easier to track down where files came from.
Colin Walters [Fri, 21 Dec 2012 14:35:27 +0000 (09:35 -0500)]
OtWorkerQueue: Don't exit until we've fulfilled initial requests
This counts as an implicit "hold" on the first items, which we must
complete. Otherwise there are race conditions where the queue may
signal idle when in fact the main process is still working.
Colin Walters [Fri, 21 Dec 2012 01:50:02 +0000 (20:50 -0500)]
Update to latest libgsystem
Has a bugfix change to gs_subprocess_new().
Colin Walters [Fri, 21 Dec 2012 01:49:19 +0000 (20:49 -0500)]
core: Allow creating tempfile without associated output stream
Just slightly more efficient, and we'll use this for spawning curl to
a tempfile.
Colin Walters [Thu, 13 Dec 2012 20:12:51 +0000 (15:12 -0500)]
core: Clean up tmpfile creation code
I have been seeing random failures here...not entirely sure why yet,
but this code is cleaner.
Colin Walters [Thu, 13 Dec 2012 20:12:33 +0000 (15:12 -0500)]
Update libgsystem
Just keeping up.
Colin Walters [Sun, 9 Dec 2012 22:01:51 +0000 (17:01 -0500)]
admin init-fs: New builtin
Should be used when initializing a new root filesystem for a "pure
OSTree" system; for example, what "ostbuild privhelper-deploy-qemu"
does when creating a filesystem image loopback.
Colin Walters [Fri, 7 Dec 2012 23:29:03 +0000 (18:29 -0500)]
admin: Process newly added config files recursively
Previously we just failed out if there was a new directory in /etc
added by the user (or the system).
Colin Walters [Mon, 3 Dec 2012 17:05:41 +0000 (12:05 -0500)]
Update to the latest libgsystem
Colin Walters [Mon, 3 Dec 2012 04:02:39 +0000 (23:02 -0500)]
Update to latest libgsystem
Has a rather important bugfix.
Colin Walters [Sun, 2 Dec 2012 20:20:17 +0000 (15:20 -0500)]
core: Use mmap() with O_NOATIME if merely reading archive-z2 entries
Previously we'd open(path, O_NOATIME) and do a series of small read()
calls to just parse the header. I think this will trigger kernel readahead
into the compressed portion, but we don't care about that.
This should be more efficient.
Colin Walters [Sat, 1 Dec 2012 21:53:06 +0000 (16:53 -0500)]
cleanup: Rebase spawn API on top of libgsystem GSSubprocess
We didn't need most the parameters anyways, so this is fewer lines of
code. It also helps me test GSubprocess.
Colin Walters [Thu, 29 Nov 2012 23:16:45 +0000 (18:16 -0500)]
Update to the latest libgsystem
Colin Walters [Thu, 29 Nov 2012 22:11:24 +0000 (17:11 -0500)]
Switch to using libgsystem shutil
More code moved into libgsystem.
Colin Walters [Thu, 29 Nov 2012 21:58:39 +0000 (16:58 -0500)]
Switch to libgsystem file reading API
More draining common utilities into libgsystem.
Colin Walters [Thu, 29 Nov 2012 21:40:17 +0000 (16:40 -0500)]
Switch to libgsystem directory creation API
More code being dropped into a common place.
Colin Walters [Thu, 29 Nov 2012 21:28:24 +0000 (16:28 -0500)]
otutil: Move checksum related bits into checksum-utils.[ch]
This paves the way for slimming ot-gio-utils.[ch] into libgsystem.
Colin Walters [Thu, 29 Nov 2012 21:24:49 +0000 (16:24 -0500)]
Drop some bits from libotutil that are now merged in libgsystem
Colin Walters [Thu, 29 Nov 2012 20:56:17 +0000 (15:56 -0500)]
libotutil: Drop dead prototype
Was never implemented.
Colin Walters [Wed, 21 Nov 2012 17:38:29 +0000 (12:38 -0500)]
deploy: With --no-kernel, do copy host kernel modules
This is used by the qemu scripts, and there we *do* need the kernel
modules inside the target system.
Colin Walters [Mon, 19 Nov 2012 16:35:30 +0000 (11:35 -0500)]
pull-local: Make multithreaded
We were blocking for easily 1/10 or 1/5 of a second in fdatasync(),
which drastically slows down the whole process.
This threading isn't quite as good as the ostree-pull command, but it
lets us avoid the dependency on libsoup everywhere, and it's simpler.
Colin Walters [Sun, 18 Nov 2012 20:44:21 +0000 (15:44 -0500)]
core: Drop old GLIB_CHECK_VERSION(2.32) bits
We hard require 2.34 now; if it doesn't exist on the system, that's
what embedded dependencies are for.
Colin Walters [Fri, 16 Nov 2012 22:41:46 +0000 (17:41 -0500)]
admin prune: New builtin for cleaning up deployments and repo
After a while of pull-deploy cycles, you start to accumulate a lot of
them. While the deployment read-only part is hardlinked, the -etc
space adds up.
Additionally, the repository itself just gets large.
The new command "ostree admin prune" deletes everything except the
"current" and "previous" deployments.
Colin Walters [Fri, 16 Nov 2012 22:14:23 +0000 (17:14 -0500)]
deploy: Write refs into repo for current/previous deployments
We don't want this data to be gc'd by default by a prune.
Colin Walters [Fri, 16 Nov 2012 20:45:05 +0000 (15:45 -0500)]
prune: Report how much disk space we freed
Just nicer to see...
Colin Walters [Fri, 16 Nov 2012 17:26:29 +0000 (12:26 -0500)]
prune: Add option to traverse refs only
The previous code (unintentionally) only traversed from refs; so data
only reachable from previous commits would be deleted. That shouldn't
be the default, but we do want to offer it as an option.
So add a --refs-only option.
Colin Walters [Fri, 16 Nov 2012 17:10:21 +0000 (12:10 -0500)]
traverse: Skip already traversed commits
This is just more efficient, since e.g. "ostree prune" may invoke
ostree_traverse_commit() multiple times for the same commit.
Colin Walters [Fri, 16 Nov 2012 15:58:35 +0000 (10:58 -0500)]
prune: Default to deleting loose objects, code cleanup
We're getting closer to matching 'git gc'.
Colin Walters [Fri, 16 Nov 2012 15:40:49 +0000 (10:40 -0500)]
admin: code cleanup
Refactor internal functions so they can be used by a later patch.